package com.xbts.system.domain;

import java.util.Objects;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import com.xbts.common.annotation.Excel;
import com.xbts.common.utils.StringUtils;
import com.xbts.common.core.domain.BaseEntity;

/**
 * 文件对象 sys_file
 *
 * @author xbts
 * @date 2023-09-05
 */
@Data
@ApiModel("文件对象")
@TableName("cn_file")
public class CnFile extends BaseEntity {

    private static final long serialVersionUID=1L;

    /** 主键 */
    @TableId
    private String id;

    /** 文件地址 */
    @Excel(name = "文件地址")
    @ApiModelProperty("文件地址")
    @NotEmpty(message = "文件地址不能为空")
    private String url;

    /** 文件名称 */
    @Excel(name = "文件名称")
    @ApiModelProperty("文件名称")
    @NotEmpty(message = "文件名称不能为空")
    private String fileName;

    /** 文件名称 */
    @Excel(name = "文件名称")
    @ApiModelProperty("文件名称")
    @NotEmpty(message = "文件名称不能为空")
    private String newFileName;

    /** 原始文件名称 */
    @Excel(name = "原始文件名称")
    @ApiModelProperty("原始文件名称")
    @NotEmpty(message = "原始文件名称不能为空")
    private String originalFileName;

    /** 文件大小单位（MB） */
    @Excel(name = "文件大小单位", readConverterExp = "M=B")
    @ApiModelProperty("文件大小单位")
    @NotEmpty(message = "文件大小单位不能为空")
    private Double size;

    public<T> QueryWrapper<T> queryWrapper(){
        QueryWrapper<T> queryWrapper=new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(url),"url",url);
        queryWrapper.like(StringUtils.isNotEmpty(fileName),"file_name",fileName);
        queryWrapper.like(StringUtils.isNotEmpty(newFileName),"new_file_name",newFileName);
        queryWrapper.like(StringUtils.isNotEmpty(originalFileName),"original_file_name",originalFileName);
        queryWrapper.like(Objects.nonNull(size),"size",size);
        return queryWrapper;
    }
}